package models

import (
	"cubeAdmin/common/utils"
	"cubeAdmin/dto"
	"github.com/beego/beego/v2/client/orm"
	"strconv"
)

type SysJob struct {
	Id      int64  `json:"id"`
	Name    string `json:"name" valid:"Required;"`
	Enabled int8   `json:"enabled"`
	Sort    int8   `json:"sort"`
	//DeptId int64 `json:"deptId"`
	Dept *SysDept `json:"dept" orm:"column(dept_id);bigint;rel(one)"`
	BaseModel
}

func init() {
	orm.RegisterModel(new(SysJob))
}

// get all
func GetAllJob(base dto.BasePage, query ...interface{}) (int, []SysJob) {
	var (
		tableName = "sys_job"
		lists     []SysJob
		condition = ""
	)
	if base.Blurry != "" {
		condition = " and name= '" + base.Blurry + "'"
	}
	if len(query) > 0 {
		enabled := query[0].(int64)
		if enabled >= 0 {
			condition += " and enabled=" + strconv.FormatInt(enabled, 10)
		}
	}

	total, _, rs := GetPagesInfo(tableName, base.Page, base.Limit, condition)
	rs.QueryRows(&lists)

	o := orm.NewOrm()
	for k, _ := range lists {
		_, _ = o.LoadRelated(&lists[k], "Dept")
	}
	return total, lists
}

func GetAllJobList() []SysJob {
	var lists []SysJob
	o := orm.NewOrm()
	qs := o.QueryTable("sys_job").Filter("is_del", 0)
	qs = qs.Filter("enabled", 1)
	qs.All(&lists)

	return lists
}

func AddJob(m *SysJob) (id int64, err error) {
	o := orm.NewOrm()
	id, err = o.Insert(m)
	return
}

func UpdateByJob(m *SysJob) (err error) {
	o := orm.NewOrm()
	_, err = o.Update(m)
	return
}

func DelByJob(ids []int64) (err error) {
	str := utils.ReturnQ(len(ids))
	o := orm.NewOrm()
	_, err = o.Raw("UPDATE sys_job SET is_del = ? WHERE id in("+str+")", 1, ids).Exec()
	return
}

//func (s *SysJob) ImportExcel(fileURL string, userId int) (int, error) {
//	/*if utils.AppDebug() {
//		return 0, errors.New("演示环境，暂无权限操作")
//	}*/
//	// 获取本地文件绝对地址
//	filePath := conf.CONFIG.Attachment.FilePath + fileURL
//	// 读取Excel文件
//	file, err := excelize.OpenFile(filePath)
//	if err != nil {
//		return 0, errors.New("excel文件读取失败")
//	}
//	// 读取第一张Sheet表
//	rows, err := file.Rows("Sheet1")
//	if err != nil {
//		return 0, errors.New("excel文件读取失败")
//	}
//	// 计数器
//	totalNum := 0
//	// Excel文件头，此处必须与Excel模板头保持一致
//	excelHeader := []string{"职级名称", "职级状态", "显示顺序"}
//	// 循环遍历读取的数据源
//	for rows.Next() {
//		// Excel列对象
//		item, err2 := rows.Columns()
//		if err2 != nil {
//			return 0, errors.New("excel文件解析异常")
//		}
//		// 读取的列数与Excel头列数不等则跳过读取下一条
//		if len(item) != len(excelHeader) {
//			continue
//		}
//		// 如果是标题栏则跳过
//		if item[1] == "职级状态" {
//			continue
//		}
//		// 职级名称
//		name := item[0]
//		// 职级状态
//		status := 1
//		if item[1] == "正常" {
//			status = 1
//		} else {
//			status = 2
//		}
//		// 显示顺序
//		sort, _ := strconv.Atoi(item[2])
//		// 实例化职级导入对象
//		level := models.Level{
//			Name:       name,
//			Status:     status,
//			Sort:       sort,
//			CreateUser: userId,
//			CreateTime: time.Now(),
//			UpdateUser: userId,
//			UpdateTime: time.Now(),
//			Mark:       1,
//		}
//		// 插入职级数据
//		if _, err := level.Insert(); err != nil {
//			return 0, err
//		}
//		// 计数器+1
//		totalNum++
//	}
//	return totalNum, nil
//}
//
//func (s *SysJob) GetExcelList(req dto.LevelPageReq) (string, error) {
//	// 初始化查询实例
//	query := orm.NewOrm().QueryTable(new(models.Level)).Filter("mark", 1)
//	// 职级名称查询
//	if req.Name != "" {
//		query = query.Filter("name__contains", req.Name)
//	}
//	// 排序
//	query = query.OrderBy("sort")
//	// 查询列表
//	lists := make([]models.Level, 0)
//	query.All(&lists)
//
//	// 循环遍历处理数据源
//	excel := excelize.NewFile()
//	excel.SetSheetRow("Sheet1", "A1", &[]string{"ID", "职级名称", "职级状态", "排序", "创建时间"})
//	for i, v := range lists {
//		axis := fmt.Sprintf("A%d", i+2)
//		excel.SetSheetRow("Sheet1", axis, &[]interface{}{
//			v.Id,
//			v.Name,
//			v.Status,
//			v.Sort,
//			v.CreateTime,
//		})
//	}
//	// 定义文件名称
//	fileName := fmt.Sprintf("%s.xlsx", time.Now().Format("20060102150405"))
//	// 设置Excel保存路径
//	filePath := fmt.Sprintf("%s/temp/%s", conf.CONFIG.Attachment.FilePath, fileName)
//	err2 := excel.SaveAs(filePath)
//	// 获取文件URL地址
//	fileURL := utils.GetImageUrl(strings.ReplaceAll(filePath, conf.CONFIG.Attachment.FilePath, ""))
//	// 返回结果
//	return fileURL, err2
//}
